#!/usr/bin/env perl

use strict;
use warnings;

use CGI;

my $DATA_DIR = ".";
my $METADATA_FILE = 'metadata.txt';
sub generate_dir_list {
	my @dirs = ();
	open (my $fh, "-|", "find", "$DATA_DIR", "-type", "d" );
	while (<$fh>) {
		my $dir = $_;
		chomp($dir);
		push @dirs, $dir if -e "$dir/$METADATA_FILE";
	}
	close($fh);
	return @dirs;
}

my $html404 = <<END;
<html>
<head>
<meta charset="utf-8">
<title>404 Page Not Found</title>
<style type="text/css">

body {
background-color:	#fff;
margin:40px;
font-family:Lucida Grande, Verdana, Sans-serif;
font-size:12px;
color:#000;
}

#content  {
border:#999 1px solid;
background-color:	#fff;
padding:20px 20px 12px 20px;
}

h1 {
font-weight:normal;
font-size:14px;
color:#990000;
margin:0 0 4px 0;
}
</style>
</head>
<body>

<div id="content">
<h1>404 Страница не найдена</h1>
<p>Запрашиваемая страница не найдена. Скорее всего, это связано с недавней реструктуризацией сайта.</p>
<p>Попробуйте поискать с <a href="http://www.myfishinghome.com/">главной страницы</a>. 
</div>

</body>
</html>
END

MAIN:
{
	my ($dir, $file) = $ENV{'REQUEST_URI'} =~ /(.*)\/(.*)/;
	my @dirs = generate_dir_list();
	my $location = "";
	foreach my $folder (@dirs) {
		if ($folder =~ /$file$/g) {
			$location = $folder;
		}
	}


	if ($location and $file) {
		print "Status: 301 Moved Permanently\n";
		print "Location: /$location\n\n";
	} else {
		print "Content-Type: text/html\r\n\r\n $html404\n\n";
	}
}
